﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using RESTServicesMov.Dominio;


namespace RESTServicesMov.Persistencia
{
    public class PedidoDetalleDAO
    {

        public List<PedidoDetalle> ObtenerDetalle(int id)
        {
            List<PedidoDetalle> DetList = new List<PedidoDetalle>();
            int  prod;
            MSProducto.ProductosClient proxy = new MSProducto.ProductosClient();
            CentroDAO dao = new CentroDAO();
            Centro centroEncontrado;
            int idcentro;
            PedidoDetalle detalleEncontrado = null;
            string sql = "SELECT * FROM PEDIDO_DETALLE WHERE  idPedido=@id and StatPos = 'P'";
            string text = "";
            using (SqlConnection con = new SqlConnection(ConexionBD.ObtenerCadena()))
            {

                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@id", id));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                                                
                  
                        while (resultado.Read())
                        {
                            if (Convert.IsDBNull(resultado["TextPos"]))
                            {
                            }
                            else
                            {
                                text = (string)resultado["TextPos"];
                            }

                            prod = int.Parse(resultado["idProducto"].ToString());

                            MSProducto.Producto producto = proxy.ObtenerProducto(prod);
                            idcentro = int.Parse(resultado["idCentro"].ToString());
                            centroEncontrado = dao.ObtenerCentro(idcentro);

                            
                            detalleEncontrado = new PedidoDetalle()
                            {
                                idpedido = int.Parse(resultado["idPedido"].ToString()),
                                pos = (string)resultado["posnr"],
                                textpos = text,
                                cantped = Decimal.Parse(resultado["CantPed"].ToString()),
                                precio = Decimal.Parse(resultado["Precio"].ToString()),
                                statpos = (string)resultado["StatPos"],
                                producto = producto,
                                centro = centroEncontrado,
                                cantent = Decimal.Parse(resultado["CANTENT"].ToString())
                            };
                            DetList.Add(detalleEncontrado);
                        }

                    }
                }
            }

            return DetList;
        }


     

        public List<PedidoDetalle> ModificarPedidoDetalle(PedidoDetalle pedidoDetalleModificar)
        {
            List<PedidoDetalle> pedidodetallemodificado = null;
            string sql = "UPDATE PEDIDO_DETALLE SET CANTENT=(SELECT CANTENT from PEDIDO_DETALLE WHERE idPedido=@id and idProducto=@idProd)+@cantent Where idPedido=@id and idProducto=@idProd" ;
            using (SqlConnection con = new SqlConnection(ConexionBD.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@id", pedidoDetalleModificar.idpedido));
                    com.Parameters.Add(new SqlParameter("@idProd", pedidoDetalleModificar.pos));              
                    com.Parameters.Add(new SqlParameter("@cantent", pedidoDetalleModificar.cantent));
                    com.ExecuteNonQuery();
                }
            }
            pedidodetallemodificado = ObtenerDetalle(pedidoDetalleModificar.idpedido);
            return pedidodetallemodificado;
        }




    }
}